package cn.iocoder.yudao.module.reading.controller.app.plan.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.Max;
import java.util.List;

/**
 * 阅读计划创建 Request VO
 *
 * @author 芋道源码
 */
@Schema(description = "用户 APP - 阅读计划创建 Request VO")
@Data
public class ReadingPlanCreateReqVO {

    @Schema(description = "计划名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "我的阅读计划")
    @NotEmpty(message = "计划名称不能为空")
    private String planName;

    @Schema(description = "计划类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "collection")
    @NotEmpty(message = "计划类型不能为空")
    private String planType;

    @Schema(description = "计划封面URL", example = "https://example.com/cover.jpg")
    private String cover;

    @Schema(description = "每天学习数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "每天学习数量不能为空")
    @Min(value = 1, message = "每天学习数量最小为1")
    @Max(value = 10, message = "每天学习数量最大为10")
    private Integer dailyCount;

    @Schema(description = "复习策略数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[\"2\", \"5\", \"8\"]")
    @NotEmpty(message = "复习策略不能为空")
    private List<String> reviewSchedule;

    @Schema(description = "绘本集ID列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1, 2, 3]")
    @NotEmpty(message = "绘本集列表不能为空")
    private List<Long> collectionIds;

}
